package testDate;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;

/**
 * 可视化日历
 */
public class ViewCalendar {
    public static void main(String[] args) throws ParseException {
        //键入日期
        System.out.println("请输入日期(格式：2018-12-12)");
        Scanner scanner = new Scanner(System.in);
        String inDate =  scanner.nextLine();

        //字符串转时间对象
        DateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
        Date nowDate = formatDate.parse(inDate);
        //System.out.println(nowDate);
        //设置时间对象为输入的的时间
        Calendar calendar = new GregorianCalendar();
        calendar.setTime(nowDate);//使用给定的 Date设置此日历的时间。
        //System.out.println(calendar.getTime());
        //把开始时间设为1号，并看1号是从周几开始的
        int realDay = calendar.get(Calendar.DATE);//输入的几号
        calendar.set(Calendar.DATE,1);
        int startWeek = calendar.get(Calendar.DAY_OF_WEEK);
       // System.out.println(startWeek);
        //当前时间月份的最后一天
        int maxDate = calendar.getActualMaximum(Calendar.DATE);

        System.out.println("日\t一\t二\t三\t四\t五\t六");
        //打印1号前面的空格
        for (int i=1;i<startWeek;i++){
            System.out.print("\t");
        }
        for(int i=1;i<=maxDate;i++){
            //当前日期做标识
            if(realDay == i){
                System.out.print("*");
            }
            System.out.print(i+"\t");
            int week = calendar.get(Calendar.DAY_OF_WEEK);
            if (week==calendar.SATURDAY) {
                System.out.println();
            }
            calendar.add(Calendar.DATE,1);
        };
    }
}
